package edu.nf.supermarket.consts;

import lombok.Getter;

import java.util.HashMap;
import java.util.Map;

/**
 * @author yjj
 * @date 2025-05-22
 * 订单支付状态枚举类
 */
@Getter
public enum PayStatusEnum {
    ORDER_UNPAID((byte) 0, "未支付"),
    ORDER_PAID((byte) 1, "已支付"),
    ORDER_COMPLETED((byte) 2, "已完成");

    private final byte code;
    private final String description;

    PayStatusEnum(byte code, String description) {
        this.code = code;
        this.description = description;
    }

    /**
     * 根据状态码获取描述信息
     *
     * @param code 状态码
     * @return 描述信息
     */
    public static String getDescription(byte code) {
        for (PayStatusEnum status : PayStatusEnum.values()) {
            if (status.getCode() == code) {
                return status.getDescription();
            }
        }
        return "未知状态";
    }

    /**
     * 判断订单是否已支付
     *
     * @param code 状态码
     * @return 是否已支付
     */
    public static boolean isPaid(byte code) {
        return code == ORDER_PAID.getCode();
    }

    /**
     * 获取所有状态码和描述的映射
     *
     * @return 状态码 -> 描述
     */
    public static Map<Byte, String> getAllStatus() {
        Map<Byte, String> statusMap = new HashMap<>();
        for (PayStatusEnum status : PayStatusEnum.values()) {
            statusMap.put(status.getCode(), status.getDescription());
        }
        return statusMap;

    }

}
